package secondStage.part2.异常;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 异常
 *
 * @author Administrator
 */
/*
编译时异常和运行时异常的区别
Java中的异常被分为两大类:编译时异常和运行时异常，也被称为受检异常和非受检异常
所有的RuntimeException类及其子类被称为运行时异常，其他的异常都是编译时异常
● 编译时异常:必须显示处理,否则程序就会发生错误，无法通过编译
● 运行时异常:无需显示处理,也可以和编译时异常一样处理
*/
public class ExceptionDemo2 {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        method1();
        System.out.println("结束");
    }

    //编译时异常
    private static void method1() {
        try {
            String string = "2021-04-02";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(string);
            System.out.println(date);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //运行时异常
    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            //System.out.println("---你访问的数组的索引不存在---");
            e.printStackTrace();
        }
    }
}